═══ 1. Installation ═══ This archive contains versions of TIMER0.SYS and DIVE. They are not installed automatically and will have to be installed by hand. Please note that these files are copyrighted by IBM and are included in the MainActor/2 archive by agreement of IBM Germany. ═══ 1.1. Installing DIVE ═══ DIVE is used by MainActor/2 for displaying video. The archive dive.zip contains the DIVE related files. Please copy the *.LUT files into the \mmos2 directory and the dive.dll into the \mmos2\dll directory. Make sure that you do not have a newer version installed. ═══ 1.2. Installing TIMER0.SYS ═══ TIMER0.SYS is needed by MainActor/2 for syncing audio and video streams. If TIMER0.SYS is not installed, video and audio streams will not be synced correctly. To install TIMER0.SYS, extract the files from the timer0.zip archive and install them with the device driver installer (DDINSTAL) utility. Make sure to remove the readonly attributes of the \os2\boot\clock*.sys files first with: attrib -r \os2\boot\clock*.sys. Please check if a newer TIMER0.SYS is not already installed. ═══ 2. Introduction ═══ MainActor/2 is a multimedia processing package. It allows you to load, edit, play and save animations, pictures and sounds of various formats and of any size. MainActor/2 features animation processing and editing functions and is the most powerful part of this package. MainView/2 is the external player of MainActor/2. It is useful when you only want to play an animation and don't want to load MainActor/2 just for that. MainView/2 can also be associated to other programs, like the WebExplorer. Both MainActor/2 and MainView/2 use the same modules for processing the various formats and are therefore quite flexible and expandable. They also both use DIVE from IBM for playback. ═══ 2.1. Why release a Beta ? ═══ We are new on the OS/2 market and want to make our product's as integrated into the OS/2 environment as possible. The best way is to let the user decide how he likes to use a program or which functions he needs. This is the reason why we decided to release MainActor/2 at this stage. Of course this means that we need your feedback. So, if you are interested in an animation processing package for OS/2, send us your suggestions. Note that beta software can contain bugs and is missing features of the final release. ═══ 2.2. Other Platforms ═══ MainActor is also available on other platforms. Currently for Windows 95 / NT 4.0, we hope to support other platforms as well one day. All platforms for which IBM's excellent VisualAge C++ open class libraries are available is a possible and easy target platform, like AIX, Solaris, HP-Unix etc. MainActor always uses the fastest video and audio playback system available on each platform, like DIVE under OS/2 and DirectX under Windows 95 / NT 4.0. If you decide to register MainActor, you automatically get a license for all platforms MainActor is or will be running on. ═══ 3. MainActor/2 ═══ MainActor/2 is the animation processing part of the MainActor/2 package. You can load, edit and play/show every animation, picture and sound format for which MainActor/2 has the proper loader module. You can save any animation, picture and sound format for which MainActor/2 has the proper saver module. The currently supplied modules are listed by selecting the Loader Modules... and Saver Modules... items of the Help menu. MainActor/2 features detailed online help. For additional information, please have a look at the User Guide. ═══ 3.1. Start Options ═══ You can pass MainActor/2 the names of projects to load. For example mactr.exe gfx\mov\test.mov pix\art.pcx would load the animation test.mov and the picture art.pcx right after MainActor/2 has started. ═══ 3.2. FAQ ═══ The frequently asked questions document for MainActor/2 can be requested from our listserver by using the FAQ command. ═══ 3.3. User Guide ═══ This guide explains the functionality of MainActor/2 as well as the vocabulary used by the online help and this documentation. ═══ 3.3.1. Working with Projects ═══ A project is either an animation, one or several pictures or a sound effect. An animation or sound effect is always a project of its own, the name of the project will be the name of the animation/sound effect. Pictures are handled differently. All pictures of a given format are grouped together in one project, the name of the project will be the name of the format of the pictures, like IFF or JPEG. This way you can group any numbers of pictures together and convert them into an animation. Every project has its own pop-up menu which is identical to the Project menu. If you press the right mouse button in the containers whitespace, the File menu will be shown as a pop-up menu. ═══ 3.3.1.1. Loading Projects ═══ There are several ways how to load a project. We included our own file requester with MainActor/2, this way you can select any number of files very easily, for example load a whole directory or a range of files. If you choose to use the system file requester you will have to select any single file per hand. A different way is to drag and drop the file icons over the project list. This way you can also load any number of files. ═══ 3.3.1.2. Playing Projects ═══ Simply double click on the project or select the Play Project... item of the Project menu. ═══ 3.3.1.3. Removing Projects ═══ Use the Remove Project item of the Project menu if you want to remove a specific project. Also, if you want to remove all currently loaded frames, you can use the Remove All item of the File menu. Another way is to drag and drop the project icon over a shredder object. ═══ 3.3.2. Working with Frames ═══ The frames of the current project are displayed in the frame list. A frame is an image which is either part of an animation or a picture in a picture list. If the frame is part of a picture list, the frames can be sorted, single or various pictures can be removed or their locations can be changed by drag and drop. This is not possible for animation frames, as these are mostly dependent on a each other in a linear fashion. Frames have the Frames menu available as a pop-up menu. ═══ 3.3.2.1. Removing Frames ═══ You can remove the currently selected frames by selecting the Remove Frames item of the Frames menu or by dragging the frames to a shredder object. Removing frames is only possible if the frames are part of a picture list. ═══ 3.3.2.2. Selecting Frames ═══ Frames can be simply selected with the mouse or by selecting one of the Select or Deselect sub menu items of the Edit menu. The items of the Frames menu often work on all selected frames, like the items for removing and saving. ═══ 3.3.2.3. Showing Frames ═══ A frame can be displayed by simply double clicking on it or by selecting the Show Frames... item of the Frames menu. ═══ 3.3.2.4. Sorting Frames ═══ Frames can be sorted by hand or automatically by their size or filename. To sort the frames by hand, simply drag and drop the frames to their new location inside the frame list. The sub menu items of the Sort Frames item of the Frames menu sort the frames by their size or filename. Sorting frames is only possible if the frames are part of a picture list. ═══ 3.3.3. Working with Timecodes ═══ Every frame of an animation or picture list has a timecode associated to it. The timecode controls the time the frame is shown during playback. MainActor/2 displays the timecode in milliseconds, therefore a timecode of 1000 would mean that the frame would be displayed exactly one second. Projects can have two different kinds of timecodes: Global or local timecodes. Converting projects with different timecode methods can be tricky, have a look at the Timecode Translation. ═══ 3.3.3.1. Global Timecodes ═══ Global timecodes only support one timecode per animation, meaning that every frame has to have the same timecode. These animation formats, for example AVI/FLI/FLC, often insert additional frames into the animation for timing purposes. These frame are dummy frames and have a size of zero, they just have the purpose to slow down playback for the last 'real' frame. You can set the global timecode of an animation by selecting the Global Timecode... item of the Project menu. ═══ 3.3.3.2. Local Timecodes ═══ Local timecodes can be set for every frame of an animation and allow a different timecode for each frame. Local timecodes can be found in QT and IFF-AnimX animation formats. You can however not set the local timecodes of QT animations. Additionally, MainActor/2 treats picture lists as if they would have a local timecode feature. You can therefore set the timecodes of pictures. This is useful for quickly making a slide show as a preview of an animation or to set the timecodes prior to saving, so that the resulting animation automatically has the right timecodes associated to it. You can change the local timecodes of the currently selected frame by choosing the Local Timecodes... item of the Frames menu. ═══ 3.3.4. Notes on Saving ═══ Saving new pictures or animations is quite easy, you can save all frames or just the selected frames of the frame list to the new format. When saving pictures, MainActor/2 will automatically enumerate the new pictures, like "test0003.bmp". There are however some things you need to know, like how MainActor/2 deals with Timecode Translations or handles 8Bit Palettes. ═══ 3.3.4.1. 8Bit Palettes ═══ When you save a new 8Bit (256 color) animation MainActor/2 will use a customized palette for the whole animation. That means that MainActor/2 will not save a new palette once the source palette changes but tries to create an optimized palette for the new animation which will then be used for all frames. We think this approach results in smoother animations, especially on platforms which write directly to the color space, like low level DOS, Amiga and MAC viewers. The generation of the animation is, however, slower, as MainActor/2 has to process all frames to generate the source palette. It is possible to edit the palette prior to saving. ═══ 3.3.4.2. Editing 8bit Palettes ═══ You can edit 8bit palettes prior to saving with the palette editor. Useful if you want to optimize the palette, but as MainActor changes the color indices while optimizing the palette it becomes a must when you want to set a specific color index as color 0, for example if you want to save the color as transparent with the GIF saver. With the color editor you always have full control over the palettes you save in your 8bit animations or pictures. ═══ 3.3.4.3. Timecode Translation ═══ There can be some problems while converting local timecode animations to global timecode animation formats. Converting global timecode animation formats to local timecode animation formats is easy, because MainActor/2 can set every local timecode to the global timecode of the source project. This does not work the other way round, as you can set the global timecode of the animation to only one of the local timecodes of the source project. MainActor/2 tries to calculate the best global timecode for the new project and inserts dummy frames behind frames which have higher timecodes than the new global one. This all sounds a little complicated but we hope MainActor/2 does the job without you even noticing it. If you are not satisfied with the timing of a certain animation, you can always split it up into pictures, load them as a picture lists and can set the timecodes of the pictures yourself. If you want to add dummy frames in the resulting animation, simply add the same picture various times into the picture list. Of course, a later version of MainActor/2 will have a sequencer which will make this kind of work very easy indeed. ═══ 3.3.4.4. AVI And Sound ═══ Some AVI animations with sound generated by MainActor may not play back correctly under OS/2. The OS/2 MM system is extremely sensible about the position of audio buffers in an AVI stream, in contrast to all other system we know(Windows etc.). If the playback is jerky under OS/2 simply use the AVI File Utility included in the Bonus Pack of OS/2 to interleave the audio and video chunks. ═══ 4. MainView/2 ═══ MainView/2 is the player only part of MainActor/2. Useful if you just want to play an animation or want to run an animation from within another program, like the WebExplorer. It can play every format for which MainActor/2 has the proper loader module. Saving is not supported from within MainView/2. The install script writes the path of the current directory to the user.ini file. This helps MainView/2 to find its loader modules if it was not started from within its own directory. If you change the location of the MainActor/2 files or delete the user.ini file, make sure to restart the install script. ═══ 4.1. Start Options ═══ Starting MainView/2 by clicking on its icon opens a file requester. Otherwise you can pass the name on the command line. Note that you can also drop the icon of the animation or picture on the MainView/2 icon. The syntax for MainView/2 is: mainview.exe [options] filename. If you do not pass any options on the command line, MainView/2 will use the global settings of MainActor/2. MainView/2 supports the following options in this release: -(c|cache) Cache Data. This option will load all data of the animation into a ram cache before playing. This will speed up animation playback. If not enough free ram is available, MainView/2 will free the already allocated memory and play directly from harddisk/cdrom. This option is off by default. -(v|volume) number Set the sound volume, the range for the number is 0-100. Default is 80. -(tbl|toolbarlocation) location Sets the initial location of the control toolbar. Location can be one of the following strings: top, bottom, left, right, floating and hidden. -(hw|hidewindow) Hide the load window, the window which displays the progress of the loading process. The window will not be shown. This option is off by default. -(das|disableautostart) This option will stop MainView/2 to start animations automatically. -(cfr|customfilerequester) Use the custom file requester instead of the system file requester. This option is off by default. -(r|repeat) number The number indicates how many times the project shall be repeated while playing. Default is 1. Example: mainview -volume 80 -tbl bottom dino.mov would play the dino.mov animation with a sound volume of 80 and the toolbar would be located at the bottom of the window. ═══ 5. mainCODEC/2 ═══ mainCODEC/2 is part of MainActor/2 but is distributed as a separate archive. It contains a subset of the MainActor/2 modules as MMPM/2 codecs. These codecs allow the supported formats to be used within the native OS/2 multimedia system, for example inside the player or VideoIN. ═══ 5.1. Where to find it ═══ mainCODEC/2 can be downloaded from our Web Pages (http://www.mainconcept.de) and our BBS (+49-(0)241-4090446). Also, it should be available per ftp at hobbes.nmsu.edu. ═══ 6. Registration ═══ If you decide to register MainActor/2, we will send you a personal serial number which will be able to unlock all future versions of this software on all available platforms. Currently MainActor is running on OS/2 and Windows 95 / NT 4.0. The fee for MainActor/2 is $60 (99,- DM) or any equivalent sum in your local currency. Please no foreign checks (except EuroChecks). We do take Master/EuroCard and VISA. You can contact us at : MainConcept, GbR Moenig/Zabel Hermann-Heusch-Platz 3 D-52062 Aachen Germany Tel: +49-(0)241-4090444 FAX: +49-(0)241-4090445 BBS: +49-(0)241-4090446 Email: info@mainconcept.de http://www.mainconcept.de You can also order at BMT Micro. Please have a look at the file bmtmicro.txt included in this package. ═══ 7. Mailing List ═══ We are running a mailing list for MainActor/2 called os2-MainActor. If you are interested in the product, we recommend to join the list. To join to the mailing list send email to listserv@mainconcept.de. ADD os2-MainActor Adds your email address to the mailing list. DELETE os2-MainActor Deletes your email address from the mailing list. FAQ os2-MainActor Will send the FAQ of the mailing list. INDEX Will send a list of all available mailing lists on our server. HELP Will send the help page for all available commands on our server. ═══ 8. Credits ═══ We have to thank the following people: o Mark Podlipec. Some of the AVI and Quicktime decoders included in MainActor are based upon his work. o The Independent JPEG group for their JPEG source. o The folks at IBM for their great VisualAge C++ environment. ═══ 9. History ═══ The history lists the last three revisions of MainActor/2, together with the bug fixes, improvements and new features of every revision. ═══ 9.1. Version 0.50 ═══ o All possible actions in the MainActor/2 window are now multithreaded and don't block the message queue (selecting a range of frames, caching data etc). o Added the GIF Picture loader+saver. o Added the GIF Animation loader+saver. o Added the module gui interface to pass options to the saver modules. o Added the info toolbar at the bottom of the main window and scraped the loader progress window. o MainView/2 now uses the system file requester by default. The custom file requester is now optional. Therefore renamed the systemfilerequester option to customfilerequester. o Added the palette editor and the functionality to edit 8bit palettes prior to saving. o Added the Show Palette function to the frames menu. o All windows used by MainActor are now entirely based on the open class library. No more dialog templates. ═══ 9.2. Version 0.60 ═══ o Bugfixes, most serious was the caching problem of IFF-Anim animations. o Added the JPEG loader and saver modules. o MainActor missed the audio part of some AVIs, fixed. o Some Quicktime formats were not recognized, fixed. o Added the WAV saver, its now possible to split audio from animations. o Animation playback introduced a high pitched noise at the end of some avis/quicktimes, fixed. o Added sound support to the AVI saver and improved the local to global timecodes conversion routines. o The save window now remembers the last module and codec selections. o Added the Sample Mode (Mono/Stereo) field to the Project Info window. o Fixed some alignment problems in the BMP saver. 24 bit bmp's were also not displayed correctly under the W95 paint program, fixed. o Updated the user interface. o Added the BMP loader module. o Added Motion JPEG support to the AVI loader and saver and to the qt loader. o Improved the handling of qt files. Also 8bit audio contained in qt animations sometimes was signed and MainActor missed it. Resulting in audio noise. ═══ 9.3. Version 0.65 ═══ o Added a system codec interface which adds Intel Indeo support to the AVI and Quicktime loader modules and Intel Indeo v3.1 and Ultimotion support to the AVI saver module. o Added the MMPM/2 quality and key frame rate options to the AVI saver module. These options define the behaviour of the system codecs. o Fixed a stupid bug in the quicktime loader module which could cause crashes while loading a qt animation. o Changed the CVID decompression routines (AVI/Quicktime) to generate more vivid colors. o Added global playback settings for MainActor and